package com.sojson.util.pay.wx.bean;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.sojson.config.exception.TransErrorCode;
import com.sojson.config.exception.bean.Status;

/**
 * 微信普通接口响应Bean
 * 
 * @author liu
 * @date 2021-03-16
 */
public class WxResponse extends WxBaseResponse {

    /***/
    private static final long serialVersionUID = -444894164284969796L;

    /** 接口调用凭证 */
    private String accessToken;
    /** 微信调用JS接口的临时票据 */
    private String ticket;
    /** 凭证有效时间,单位: 秒 */
    private String expiresIn;
    /** 用户唯一标识 */
    private String openid;
    /** 会话密钥 */
    private String sessionKey;
    /** 用户在开放平台的唯一标识符 */
    private String unionid;
    /** 头像 */
    private String headimgurl;
    /** 昵称 */
    private String nickname;
    /** 性别 */
    private String sex;

    public WxResponse() {
        super();
    }

    /**
     * 成功返回
     * 
     * @param code
     */
    public WxResponse(Integer code) {
        super(code);
    }

    /**
     * 返回失败
     * 
     * @param code
     * @param msg
     */
    public WxResponse(Integer code, String msg) {
        super(code, msg);
    }

    /**
     * 返回失败
     * 
     * @param transErrorCode
     */
    public WxResponse(TransErrorCode transErrorCode) {
        super(transErrorCode);
    }

    public WxResponse(Status status) {
        super(status);
    }

    /**
     * 获取接口调用凭证
     * 
     * @return
     */
    public String getAccessToken() {
        return accessToken;
    }

    /**
     * 设置接口调用凭证
     * 
     * @param accessToken
     */
    @JsonProperty("access_token")
    @JSONField(name = "access_token")
    public void setAccessToken(String accessToken) {
        this.accessToken = accessToken;
    }

    /**
     * 获取微信调用JS接口的临时票据
     * 
     * @return
     */
    public String getTicket() {
        return ticket;
    }

    /**
     * 设置微信调用JS接口的临时票据
     * 
     * @param ticket
     */
    public void setTicket(String ticket) {
        this.ticket = ticket;
    }

    /**
     * 获取凭证有效时间,单位: 秒
     * 
     * @return
     */
    public String getExpiresIn() {
        return expiresIn;
    }

    /**
     * 设置凭证有效时间,单位: 秒
     * 
     * @param expiresIn
     */
    @JsonProperty("expires_in")
    @JSONField(name = "expires_in")
    public void setExpiresIn(String expiresIn) {
        this.expiresIn = expiresIn;
    }

    /**
     * 获取用户唯一标识
     * 
     * @return
     */
    public String getOpenid() {
        return openid;
    }

    /**
     * 设置用户唯一标识
     * 
     * @param openid
     */
    public void setOpenid(String openid) {
        this.openid = openid;
    }

    /**
     * 获取会话密钥
     * 
     * @return
     */
    public String getSessionKey() {
        return sessionKey;
    }

    /**
     * 设置会话密钥
     * 
     * @param session_key
     */
    @JsonProperty("session_key")
    @JSONField(name = "session_key")
    public void setSessionKey(String sessionKey) {
        this.sessionKey = sessionKey;
    }

    /**
     * 获取用户在开放平台的唯一标识符
     * 
     * @return
     */
    public String getUnionid() {
        return unionid;
    }

    /**
     * 设置用户在开放平台的唯一标识符
     * 
     * @param unionid
     */
    public void setUnionid(String unionid) {
        this.unionid = unionid;
    }

    /**
     * 获取头像
     * 
     * @return
     */
    public String getHeadimgurl() {
        return headimgurl;
    }

    /**
     * 设置头像
     * 
     * @param headimgurl
     */
    public void setHeadimgurl(String headimgurl) {
        this.headimgurl = headimgurl;
    }

    /**
     * 获取昵称
     * 
     * @return
     */
    public String getNickname() {
        return nickname;
    }

    /**
     * 设置昵称
     * 
     * @param nickname
     */
    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    /**
     * 获取性别
     * 
     * @return
     */
    public String getSex() {
        return sex;
    }

    /**
     * 设置性别
     * 
     * @param sex
     */
    public void setSex(String sex) {
        this.sex = sex;
    }

}